package com.vict.util;

import java.time.DayOfWeek;
import java.time.LocalDateTime;

/**
 * 股票工具类
 */
public class StockUtil {
    /**
     * 获取日期
     */
    public static String leftNumAndYyyyMMdd(String startYyyyMMdd, int leftNum){
        Long yyyyMMdd = TimeUtil.getTime("yyyyMMdd", startYyyyMMdd);
        LocalDateTime convert = TimeUtil.convert(yyyyMMdd);

        if(leftNum == 0){
            return startYyyyMMdd;
        }

        LocalDateTime localDateTime = plusManyStockDay(convert, false, leftNum);
        Long convert1 = TimeUtil.convert(localDateTime);
        String yyyyMMdd1 = TimeUtil.getTimeStr("yyyyMMdd", convert1);
        return yyyyMMdd1;
    }

    /**
     * 移动n个股票日
     */
    public static LocalDateTime plusManyStockDay(LocalDateTime convert, boolean isPlus, int num){
        for(int i = 0 ; i < num ; i++){
            convert = plusOneStockDay(convert, isPlus);
        }
        return convert;
    }

    /**
     * 移动一个股票交易日
     */
    public static LocalDateTime plusOneStockDay(LocalDateTime convert, boolean isPlus){

        while(true){
            if(isPlus){
                // 加日期
                convert = convert.plusDays(1);
                DayOfWeek dayOfWeek = convert.getDayOfWeek();
                if(1 <= dayOfWeek.getValue() && dayOfWeek.getValue() <= 5){
                    // 交易日
                    return convert;
                }else {
                    // 非交易日
                    continue;
                }
            }else{
                // 减日期
                convert = convert.plusDays(-1);
                DayOfWeek dayOfWeek = convert.getDayOfWeek();
                if(1 <= dayOfWeek.getValue() && dayOfWeek.getValue() <= 5){
                    // 交易日
                    return convert;
                }else {
                    // 非交易日
                    continue;
                }
            }
        }
    }

    /** 判断是否是交易日 */
    public static boolean isJiaoyiri(int dayOfWeek){
        if(1 <= dayOfWeek && dayOfWeek <= 5){
            // 交易日
            return true;
        }else {
            // 非交易日
            return false;
        }
    }
}
